﻿using B.MES.SLY.Domain.Entities;
using B.MES.SLY.Service.Input.Bom;
using B.MES.SLY.Service.Input.Customer;
using B.MES.SLY.Service.Input.Material;
using B.MES.SLY.Service.Input.ProductionLine;
using B.MES.SLY.Service.Input.Record;
using B.MES.SLY.Service.Input.Supplier;
using B.MES.SLY.Service.Input.WorkShop;
using B.MES.SLY.Service.Input.WorkStation;
using B.MES.SLY.Service.OutPut;
using Standard;
using Standard.Dtos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AddMaterialInput = B.MES.SLY.Service.Input.Material.AddMaterialInput;
using EditMaterialInput = B.MES.SLY.Service.Input.Material.EditMaterialInput;
using SearchMaterialInput = B.MES.SLY.Service.Input.Material.SearchMaterialInput;

namespace B.MES.SLY.Service
{
    public interface IMesService
    {
      
        //车间
        #region
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        ApiResult<int> Add(AddWorkshopnput input);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        ApiResult<int> Delete(string Id);
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> Update(UpdateWorkShopInput input);
        /// <summary>
        /// 表中数据条数
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<List<SLY_WORKSHOP_MANAGEMENTMODEL>> GetListCount();
        /// <summary>
        /// 不带条件查询列表
        /// </summary>
        /// <returns></returns>
       ApiResult<List<SLY_WORKSHOP_MANAGEMENTMODEL>> GetAll();
        /// <summary>
        /// 带条件查询列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
       ApiPaging<GetWorkShopOutPut> GetAll(SearchWorkShopInput input);
        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
       ApiResult<string> DeleteList(List<string> Ids);
        #endregion
        //产线
        #region
        /// <summary>
        /// 产线新增
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddProductionLine(AddProductionLineInput input);
        /// <summary>
        /// 产线列表
        /// </summary>
        /// <returns></returns>
        ApiResult<List<GetProductionLineOutPut>> GetProductionLine();
        /// <summary>
        /// 产线列表条数
        /// </summary>
        /// <returns></returns>
        ApiResult<List<SLY_PRODUCTIONLINE_MANAGEMENTMODEL>> GetProductionLineCount();
        /// <summary>
        /// 产线修改
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateProductionLine(UpdateProductionLineInput input);
        /// <summary>
        /// 产线删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteProductionLine(string Id);
        /// <summary>
        /// 产线批量删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
         ApiResult<string> DeleteListProductionLine(List<string> Ids);
        /// <summary>
        /// 产线分页查询
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiPaging<GetProductionLineOutPut> GetPageProductionLine(SearchProductionLineInput input);
        #endregion
       //工位
        #region
        /// <summary>
        /// 工位新增
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddWorkStation(AddWorkStationInput input);
        /// <summary>
        /// 工位修改
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateWorkStation(UpdateWorkStationInput input);
        /// <summary>
        /// 工位删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteWorkStation(string ID);
        /// <summary>
        /// 工位管理显示列表
        /// </summary>
        /// <returns></returns>
        ApiResult<List<GetWorkStationOutPut>> GetWorkStation();
        /// <summary>
        /// 工位管理显示列表条数
        /// </summary>
        /// <returns></returns>
        ApiResult<List<SLY_WORKSTATION_MANAGEMENTMODEL>> GetWorkStationCount();
        /// <summary>
        /// 工位管理列表分页查询
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiPaging<GetWorkStationOutPut> GetPageWorkStation(SearchWorkStationInput input);
        /// <summary>
        /// 工位管理批量删除
        /// </summary>
        /// <param name="Ids"></param>
        /// <returns></returns>
        ApiResult<int> WorkStationDeleteList(List<string> Ids);
        #endregion
       //客户
        #region
        /// <summary>
        /// 客户新增
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> AddCustomer(AddCustomerInput input);
        /// <summary>
        /// 客户修改
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
       ApiResult<int> UpdateCustomer(UpdateCustomerInput input);
        /// <summary>
        /// 客户删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        ApiResult<int> DeleteCustomer(string Id);
        /// <summary>
        /// 客户列表
        /// </summary>
        ApiResult<List<GetCustomerOutPut>> GetCustomer();
        /// <summary>
        /// 客户列表条数
        /// </summary>
        ApiResult<List<SLY_CUSTOMER_MANAGEMENTMODEL>> GetCustomerCount();
        /// <summary>
        /// 客户列表分页查询
        /// </summary>
        ApiPaging<GetCustomerOutPut> GetPageCustomer(SearchCustomerInput input);
        /// <summary>
        /// 客户批量删除
        /// </summary>
        ApiResult<int> CustomerDeleteList(List<string> Ids);
        #endregion
        //供应商
        #region 
       /// <summary>
       /// 添加供应商
       /// </summary>
       /// <param name="input"></param>
       /// <returns></returns>
        ApiResult<int> AddSupplier(AddSupplierInput input);
        /// <summary>
        /// 修改供应商
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiResult<int> UpdateSupplier(UpdateSupplierInput input);
        /// <summary>
        /// 删除供应商
        /// </summary>
        ApiResult<int> DeleteSupplier(string Id);
        /// <summary>
        /// 供应商列表
        /// </summary>
        ApiResult<List<GetSupplierOutPut>> GetSupplier();
        /// <summary>
        /// 供应商列表条数
        /// </summary>
        ApiResult<List<SLY_SUPPLIER_MANAGEMENTMODEL>> GetSupplierCount();
        /// <summary>
        /// 供应商分页查询列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ApiPaging<GetSupplierOutPut> GetPageSupplier(SearchSupplierInput input);
        /// <summary>
        /// 批删供应商
        /// </summary>
        /// <param name="Ids"></param>
        /// <returns></returns>
        ApiResult<int> DeleteSupplierList(List<string> Ids);
        #endregion
        //记录
        #region 
        ApiPaging<GetRelstionOutPut> GetRelstion(string? ID);
        ApiResult<List<GetRelstionOutPut>> GetRelstionCount();
        ApiPaging<GetCollectionOutPut> GetCollection(string? ID);
        ApiPaging<GetSalesOutPut> GetSales(string? ID);
        ApiResult<List<GetSalesOutPut>> GetSalesCount();
        ApiPaging<GetInvoiceOutPut> GetInvoice(string? ID);
        ApiPaging<GetDeliveryOutPut> GetDelivery(string? ID);
        ApiResult<int> AddRelation(AddRelationInput addRelationInput);
        ApiResult<int> AddSales(AddSalesInput Input);
        ApiResult<int> AddInvoice(AddInvoice Input);
        ApiResult<int> AddDelicery(AddDelicery Input);
        ApiResult<int> AddCollection(AddCollection Input);

        #endregion
        ApiResult<int> AddMaterial(AddMaterialInput addMaterialInput);
        ApiResult<int> MaterialDeleteList(List<string> Ids);
        ApiPaging<GetMaterialOutPut> GetMaterial(SearchMaterialInput searchMaterialInput);
        ApiResult<List<GetMaterialOutPut>> GetMaterialcount();
        ApiResult<int> UpdateMaterial(EditMaterialInput editMaterialInput);
        ApiResult<int> AddBom(AddBomInput input);
        ApiPaging<GetBomOutPut> GetBom(SearchBomInput input);
        ApiResult<List<GetBomOutPut>> GetBomcount();
        ApiResult<List<MESTreeBomDTO>> MESTreeBom();
    }
}
